#include "spiderApp.h"
#include "Moose.h"
#include "AppFactory.h"
#include "ModulesApp.h"
#include "MooseSyntax.h"

template <>
InputParameters
validParams<spiderApp>()
{
  InputParameters params = validParams<MooseApp>();
  return params;
}

spiderApp::spiderApp(InputParameters parameters) : MooseApp(parameters)
{
  Moose::registerObjects(_factory);
  ModulesApp::registerObjects(_factory);
  spiderApp::registerObjects(_factory);

  Moose::associateSyntax(_syntax, _action_factory);
  ModulesApp::associateSyntax(_syntax, _action_factory);
  spiderApp::associateSyntax(_syntax, _action_factory);
}

// Not in DarcyThermoMechApp.C
spiderApp::~spiderApp() {}

void
spiderApp::registerApps()
{
  registerApp(spiderApp);
}

void
spiderApp::registerObjects(Factory & factory)
{
  /* Uncomment Factory parameter and register your new production objects here! */
  registerKernel(spider);
  registerKernel(ComputeElasticityTensorNeohookean);
  registerKernel(ComputeStressNeohookean);
}

void
spiderApp::associateSyntax(Syntax & /*syntax*/, ActionFactory & /*action_factory*/)
{
  /* Uncomment Syntax and ActionFactory parameters and register your new production objects here! */
}

void
spiderApp::registerObjectDepends(Factory & /*factory*/)
{
}

void
spiderApp::associateSyntaxDepends(Syntax & /*syntax*/, ActionFactory & /*action_factory*/)
{
}

/***************************************************************************************************
 *********************** Dynamic Library Entry Points - DO NOT MODIFY ******************************
 **************************************************************************************************/
extern "C" void
spiderApp__registerApps()
{
  spiderApp::registerApps();
}

extern "C" void
spiderApp__registerObjects(Factory & factory)
{
  spiderApp::registerObjects(factory);
}

extern "C" void
spiderApp__associateSyntax(Syntax & syntax, ActionFactory & action_factory)
{
  spiderApp::associateSyntax(syntax, action_factory);
}
